home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / pas / swag / win_os2.swg / 0007_"About" box in Windows.pas < prev    next >
Pascal/Delphi Source File  |  1993-08-27  |  2KB  |  73 lines

  1. {
  2. SCOTT SAMET
  3.  
  4. > I have a program that is always an icon, but I want to add an "about"
  5. > command to it, to display a dialog box with info on the author and
  6. > the program. Anyone know how to do this or where info on it can be found?
  7.  
  8. All system menu commands, even those you add, are returned as wm_SysCommand
  9. messages.  You need to check wParam to see if it's one of yours, and if not,
  10. pass it to DefWndProc.
  11. }
  12.  
  13. Uses
  14.   OWindows, WinProcs, WinTypes;
  15.  
  16. Const
  17.   cm_About = 100;
  18.  
  19. Type
  20.   TMyApp = Object(TApplication)
  21.     Procedure InitMainWindow; Virtual;
  22.   end;
  23.  
  24.   PMyWin = ^TMyWin;
  25.   TMyWin = Object(TWindow)
  26.     Procedure SetupWindow; Virtual;
  27.     Procedure wmSysCommand(Var Msg : TMessage);
  28.       virtual wm_First + wm_SysCommand;
  29.     Procedure wmQueryOpen(Var Msg : TMessage);
  30.       virtual wm_First + wm_QueryOpen;
  31.   end;
  32.  
  33. Procedure TMyApp.InitMainWindow;
  34. Begin
  35.   MainWindow := New(PMyWin, Init (Nil, 'Test Window'));
  36.   { This gives the window a system menu with Move, Switch and Close }
  37.   PWindow(MainWindow)^.Attr.Style := ws_Overlapped or ws_Sysmenu;
  38. end;
  39.  
  40. Procedure TMyWin.SetupWindow;
  41. Var
  42.   SysMenu: hMenu;
  43. Begin
  44.   SysMenu := GetSystemMenu(hWindow, False);
  45.   AppendMenu(SysMenu, mf_Separator, 0, Nil);
  46.   AppendMenu(SysMenu, mf_String, cm_About, '&About');
  47. end;
  48.  
  49. Procedure TMyWin.wmQueryOpen(Var Msg : TMessage);
  50. Begin
  51.   { This keeps the window an icon at all times }
  52.   Msg.Result := 0;
  53. end;
  54.  
  55. Procedure TMyWin.wmSysCommand(Var Msg : TMessage);
  56. Begin
  57.   Case Msg.wParam of
  58.     cm_About :
  59.       MessageBox(hWindow, 'About Text', 'About Box', mb_ok)
  60.     Else
  61.       DefWndProc (Msg);
  62.   end;
  63. end;
  64.  
  65. Var
  66.   App:  TMyApp;
  67. Begin
  68.   CmdShow := sw_ShowMinimized;
  69.   App.Init ('Test');
  70.   App.Run;
  71.   App.Done;
  72. end.
  73.